package demo2;
//Description:抽象方法
abstract class Shape { // 抽象类抽象方法都不能被final修饰
    public abstract void draw() ;//抽象方法  不能是private的
    /* 1包含抽象方法的类叫做抽象类  2一个没有具体实现的方法 被abstract修饰  3抽象类是不可以被实例化的（new）
    4因为不能被实例化  所有只能被继承    5抽象类当中也可以包含和普通类一样的成员和方法
    6普通类要继承抽象类  必须重写抽象类中的所有的抽象方法   7抽象类最大的作用就是被继承
    8抽象类A继承了抽象类B 那么抽象类 A可以不用重写 抽象类B的抽象方法
    9类C继承了抽象类A 而A抽象了抽象类B 那么类C必须重写抽象类A和抽象类B中的所有方法
    10 好好学
     */

}
class Rect extends  Shape{
    @Override
    public void draw() {//一定要重写  否则会报错（继承抽象类）
        System.out.println("♦");
    }
}
abstract class A extends Shape{
    public  abstract  void func();
}
public class Test {
    public static void drawMap(Shape shape){
        shape.draw();
    }
    public static void main(String[] args) {

        Shape shape = new Rect();
        //Shape shape = new Shape() ;不能实例化
        drawMap(shape);


    }
}
